package com.ruoyi.training.service;

import java.util.List;
import com.ruoyi.training.domain.TrainingSchedule;
import com.ruoyi.training.dto.TrainingClassBatchDTO;

/**
 * 培训计划明细（单节课程/活动）Service接口
 *
 * @author WorrilessGo
 * @date 2025-09-24
 */
public interface ITrainingScheduleService
{
    /**
     * 查询培训计划明细（单节课程/活动）
     *
     * @param trainingScheduleId 培训计划明细（单节课程/活动）主键
     * @return 培训计划明细（单节课程/活动）
     */
    public TrainingSchedule selectTrainingScheduleByTrainingScheduleId(String trainingScheduleId);

    /**
     * 查询培训计划明细（单节课程/活动）列表
     *
     * @param trainingSchedule 培训计划明细（单节课程/活动）
     * @return 培训计划明细（单节课程/活动）集合
     */
    public List<TrainingSchedule> selectTrainingScheduleList(TrainingSchedule trainingSchedule);

    /**
     * 新增培训计划明细（单节课程/活动）
     *
     * @param trainingSchedule 培训计划明细（单节课程/活动）
     * @return 结果
     */
    public int insertTrainingSchedule(TrainingSchedule trainingSchedule);

    /**
     * 修改培训计划明细（单节课程/活动）
     *
     * @param trainingSchedule 培训计划明细（单节课程/活动）
     * @return 结果
     */
    public int updateTrainingSchedule(TrainingSchedule trainingSchedule);

    /**
     * 批量删除培训计划明细（单节课程/活动）
     *
     * @param trainingScheduleIds 需要删除的培训计划明细（单节课程/活动）主键集合
     * @return 结果
     */
    public int deleteTrainingScheduleByTrainingScheduleIds(String[] trainingScheduleIds);

    /**
     * 删除培训计划明细（单节课程/活动）信息
     *
     * @param trainingScheduleId 培训计划明细（单节课程/活动）主键
     * @return 结果
     */
    public int deleteTrainingScheduleByTrainingScheduleId(String trainingScheduleId);

    /**
     * 批量新增培训计划明细（单节课程/活动）
     * lqx
     */
    public int batchInsertTrainingSchedule(List<TrainingSchedule> trainingSchedules);

    /**
     * 批量更新班级的培训计划（先删除该班级所有计划，再新增传递的列表）
     * lqx
     */
    public int batchUpdateByClass(TrainingClassBatchDTO batchDTO);

    /**
     * 通过班级ID查询培训计划列表
     * lqx
     * @param trainingClassId 班级ID
     * @return 培训计划列表
     */
    public List<TrainingSchedule> selectByClassId(String trainingClassId);
}
